package shiro

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"strings"
)

func AuthMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 如果是Swagger相关的请求，则跳过认证
		if strings.HasPrefix(c.Request.URL.Path, "/swagger") {
			c.Next()
			return
		}
		authHeader := c.GetHeader("Authorization")
		if authHeader == "" {
			c.AbortWithStatusJSON(401, gin.H{"error": "Authorization 不能为空"})
			return
		}
		// 移除 Bearer
		token := strings.TrimPrefix(authHeader, "Bearer ")
		fmt.Println("token:", token)
		if token == "" || !validateToken(token) {
			c.AbortWithStatusJSON(401, gin.H{"error": "令牌无效或过期"})
			return
		}
		// 如果 Token 验证通过，继续处理请求
		c.Next()
	}
}

// 验证 Token
func validateToken(token string) bool {
	// 这里可以实现自己的 Token 验证逻辑
	// 例如解码 JWT、查询数据库等
	return token == "valid-token" // 示例验证逻辑
}
